package com.gokzzz.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.gokzzz.dto.SysMenuSaveOrUpdateDTO;
import com.gokzzz.dto.SysMenuSearchQueryDTO;
import com.gokzzz.entity.SysMenu;
import org.springframework.validation.annotation.Validated;

import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * @author gokzzz
 * @date 2022/3/26 11:03
 * @description 菜单service
 */
@Validated
public interface ISysMenuService extends IService<SysMenu> {

    /**
     * 根据用户id查询菜单
     * @param sysMenuSearchQueryDTO 查询条件
     * @return 菜单列表
     */
    List<SysMenu> listSysMenu(@NotNull(message = "菜单查询参数不能为空") SysMenuSearchQueryDTO sysMenuSearchQueryDTO);

    /**
     * 新增菜单
     * @param sysMenuSaveOrUpdateDTO 菜单信息
     */
    void saveSysMenu(@Validated({SysMenuSaveOrUpdateDTO.Save.class}) SysMenuSaveOrUpdateDTO sysMenuSaveOrUpdateDTO);

    /**
     * 更新菜单
     * @param sysMenuSaveOrUpdateDTO 菜单信息
     */
    void updateSysMenu(@Validated({SysMenuSaveOrUpdateDTO.Update.class}) SysMenuSaveOrUpdateDTO sysMenuSaveOrUpdateDTO);

    /**
     * 删除菜单
     * @param id 菜单id
     */
    void deleteSysMenu(@NotNull(message = "菜单id不能为空") Long id);

    /**
     * 根据菜单id查询下拉菜单
     * @param id 菜单id
     * @return 下拉菜单
     */
    List<SysMenu> listSysMenuToSelect(@NotNull(message = "菜单id不能为空") Long id);

    /**
     * 查询所有菜单
     * @return 菜单列表
     */
    List<SysMenu> listSysMenuAllToSelect();
}
